# ДЗ

Требуется реализовать методы в `CompressWork.cs`, и проверить их тестами `CompressWorkTest.cs`

*Запуск тестов:* 
**Visual Studio**
Откройте обозреватель тестов, выбрав Тест > Обозреватель тестов в верхней строке меню (или нажмите клавиши CTRL + E, T).
Запустите модульные тесты, нажав Запустить все (или нажмите клавиши CTRL + R, V).

## 1. Сжатие дипломной работы

★★☆☆☆

Иван целый год писал дипломную работу. И когда его попросили скинуть её в облако к другим работам студентов, то оказалось, что в облаке не хватает места для его труда. Придётся сжимать текстовый файл, но Иван боится, что приложение для сжатия файлов использует алгоритм сжатия с потерями и его дипломная работа будет испорчена. Надо помочь Ивану написать функцию сжатия RLE.

Напомню принцип алгоритма RLE: группа  идущих  подряд одинаковых символов заменяется на пару кодов вида `<код символа; число повторов>`. Например, при сжатии строки `aaaabbbc` получим `a4b3c1`.

```C#
String Compress(string graduatedWork)
```

## 2. Чтение сжатой дипломной работы

★★☆☆☆

Профессор начал проверять работы и не смог понять, что написал Иван. Нужно написать функцию восстановления данных для профессора.

```C#
String Decompress(string graduatedWork)
```

## 3. Удаление комментов

★★★☆☆

Профессор посмотрел код Ивана и дал комментарий, что не хватает примеров кода. Иван решил сжать свой код и закинуть на облако, но сначала надо удалить все комментарии из кода. Исходный код программы - это массив строк `source`, где `source[i]` - это i-я строка исходного кода.

В Java есть два типа комментариев: строковые и блочные.

Для строковых используются две косые черты `//`, при этом комментарий начинается сразу за символами `//` и продолжается до конца строки.

Строка `/*` обозначает комментарий блока, который представляет, что все символы до следующего (неперекрывающегося) появления `*/` должны быть проигнорированы.

Напиши функцию, которая удалит все комментарии из кода Ивана и вернёт код без комментариев.

```C#
public List<string> RemoveComments(String[] source)
```
